#pragma once

#include <map>
#include <vector>
#include <string>
//#include "GameTime.h"
//#include "structs.h"
//#include "agent.h"
//#include "emotion.h"
//#include "Value.h"
//#include "condition.h"
//#include "role.h"


namespace BAA
{



	////////////////////////////////////////////////////////////////////////////
	//// Agent Vectors
	////////////////////////////////////////////////////////////////////////////

	//typedef std::vector<const Agent*> AgentVector;
	//
	////////////////////////////////////////////////////////////////////////////
	////  agent maps
	////////////////////////////////////////////////////////////////////////////

	
	typedef std::map<std::string, float, std::less<std::string>>							StringFloatMap;
	//
	////////////////////////////////////////////////////////////////////////////
	//// Emotion Maps
	////////////////////////////////////////////////////////////////////////////
	//
	//typedef std::map<const Emotion*, Emotion*, std::less<const Emotion*>>		EmotionEmotionMap;
	//typedef std::map<const string, Emotion*, std::less<const string>>		StringEmotionMap;
	//
	//////////////////////////////////////////////////////////////////////////
	//// Value Maps
	////////////////////////////////////////////////////////////////////////////
	//typedef std::map<const Value*,const Value*, std::less<const Value*>>		ValueValueMap;
	//typedef std::map<string, vector<Value*>*, std::less<string>>				StringValuesMap;
	//typedef std::map<const Agent*, vector<Value*>*, std::less<const Agent*>>	AgentValuesMap;
	

	////////////////////////////////////////////////////////////////////////////
	//// Conditions Vector
	////////////////////////////////////////////////////////////////////////////
	//typedef std::vector<const Condition*>										Conditions;
	
	
	//////////////////////////////////////////////////////////////////////////
	// String Float Vector
	//////////////////////////////////////////////////////////////////////////
	struct StringFloat
	{
		std::string STRING;
		float VALUE;
	};

	typedef std::vector<StringFloat>											StringFloatVector;


	//////////////////////////////////////////////////////////////////////////
	// Role Data 
	//////////////////////////////////////////////////////////////////////////
	//struct RoleData{
	//	Role *				mRole;
	//	float				mRoleImportance;
	//	EmotionalMemory *	mEmotionalMemory;
	//	AgentIDMap *		mTargets;
	//	StringFloatMap		mFloatGoalData;
	//	StringFloatMap		mFloatValueData;
	//	StringFloatMap		mProperties;

	//};

	//typedef std::map<const Role*, const Role*, std::less<const Role*>>		RoleRoleMap;
	//typedef std::vector<const RoleData*>										RoleDataVector;


}// end namespace
